/**
 * 
 */
package br.com.mkmts.view.controller.menu.pedidos;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import br.com.mkmts.business.PedidoBO;
import br.com.mkmts.dto.PedidoDTO;
import br.com.mkmts.view.controller.AbstractModelBean;
import br.com.mkmts.view.controller.menu.pedidos.utils.EstoqueCalcUtils;

/**
 * @author christopher.rozario
 *
 */
@ManagedBean
@SessionScoped
public class HistoricoPedidoBean extends AbstractModelBean{

	private final String TELA_LISTAR_PEDIDOS = "/content/m-pedidos/listarHistoricoPedidos";
	private final String TELA_DETALHE_PEDIDO = "/content/m-pedidos/detalharHistoricoPedido";

	@ManagedProperty(value = "#{pedidoBOImpl}")
	private PedidoBO pedidoBO = null;
	
//	CAMPOS DE FILTRO
	private String codPedidoFiltro;
	private Date dataInicioFiltro;
	private Date dataFinalFiltro;

	private List<PedidoDTO> listaDePedidosRealizados;
	private PedidoDTO pedidoSelecionado;
	private PedidoDTO pedidoDto;
	
	private BigDecimal vlrTotalRevendaLbl;
	private BigDecimal vlrTotalAtacadoLbl;
	
	@Override
	public String iniciarTela() {
		limparCamposFiltro();
		carregarListaPedidosRealizados();
		 Map<String, BigDecimal>calcValores = EstoqueCalcUtils.calcularValorTotalPedido(listaDePedidosRealizados);
		 vlrTotalRevendaLbl = calcValores.get("vlrTotalRevenda");
		 vlrTotalAtacadoLbl = calcValores.get("vlrTotalAtacado");
		 
		return TELA_LISTAR_PEDIDOS;
	}

	@Override
	public void limparCamposFiltro() {
		codPedidoFiltro = null;
		dataInicioFiltro = null;
		dataFinalFiltro = null;
		vlrTotalRevendaLbl = null;
		vlrTotalAtacadoLbl = null;
	}
	
	public void limparPedidoSelecionado() {
		pedidoSelecionado = null;
	}
	
	@Override
	public String pesquisarFiltro() {
		listaDePedidosRealizados = pedidoBO.consultarPedidos(codPedidoFiltro, dataInicioFiltro, dataFinalFiltro);
		
		return TELA_LISTAR_PEDIDOS;
	}

	public String navegarDetalharPedido() {
		setPedidoDto(pedidoSelecionado);
		return TELA_DETALHE_PEDIDO;
	}
	public String navegarVoltarDetalhePedido() {
		return TELA_LISTAR_PEDIDOS;
	}	
	private void carregarListaPedidosRealizados(){
		listaDePedidosRealizados = pedidoBO.listarPedidosRealizados();
	}

	
//	GETTERS AND SETTERS
	public String getCodPedidoFiltro() {
		return codPedidoFiltro;
	}

	public void setCodPedidoFiltro(String codPedidoFiltro) {
		this.codPedidoFiltro = codPedidoFiltro;
	}

	public Date getDataInicioFiltro() {
		return dataInicioFiltro;
	}

	public void setDataInicioFiltro(Date dataInicioFiltro) {
		this.dataInicioFiltro = dataInicioFiltro;
	}

	public Date getDataFinalFiltro() {
		return dataFinalFiltro;
	}

	public void setDataFinalFiltro(Date dataFinalFiltro) {
		this.dataFinalFiltro = dataFinalFiltro;
	}

	public List<PedidoDTO> getListaDePedidosRealizados() {
		return listaDePedidosRealizados;
	}

	public void setListaDePedidosRealizados(List<PedidoDTO> listaDePedidosRealizados) {
		this.listaDePedidosRealizados = listaDePedidosRealizados;
	}

	public PedidoDTO getPedidoSelecionado() {
		return pedidoSelecionado;
	}

	public void setPedidoSelecionado(PedidoDTO pedidoSelecionado) {
		this.pedidoSelecionado = pedidoSelecionado;
	}

	public BigDecimal getVlrTotalRevendaLbl() {
		return vlrTotalRevendaLbl;
	}

	public void setVlrTotalRevendaLbl(BigDecimal vlrTotalRevendaLbl) {
		this.vlrTotalRevendaLbl = vlrTotalRevendaLbl;
	}

	public BigDecimal getVlrTotalAtacadoLbl() {
		return vlrTotalAtacadoLbl;
	}

	public void setVlrTotalAtacadoLbl(BigDecimal vlrTotalAtacadoLbl) {
		this.vlrTotalAtacadoLbl = vlrTotalAtacadoLbl;
	}

	public PedidoBO getPedidoBO() {
		return pedidoBO;
	}

	public void setPedidoBO(PedidoBO pedidoBO) {
		this.pedidoBO = pedidoBO;
	}

	public PedidoDTO getPedidoDto() {
		return pedidoDto;
	}

	public void setPedidoDto(PedidoDTO pedidoDto) {
		this.pedidoDto = pedidoDto;
	}
	

}
